package com.pangu.utils;

import com.pangu.constant.enums.IIntEnum;
import com.pangu.constant.enums.IStrEnum;
import lombok.NoArgsConstructor;

import java.util.Arrays;

/**
 * @author Linbizhao
 * @description: EnumCodeUtils
 * @since 2023/11/21 11:37
 */
@NoArgsConstructor
public class EnumCodeUtils {

    public static <E extends Enum<?> & IIntEnum<?>> E codeOf(Class<E> enumClass, int code) {
        E[] enumConstants = enumClass.getEnumConstants();
        return Arrays.stream(enumConstants).filter((e) -> {
            return ((IIntEnum<?>) e).getCode().equals(code);
        }).findFirst().orElse(null);
    }

    public static <E extends Enum<?> & IStrEnum<?>> E codeOf(Class<E> enumClass, String code) {
        E[] enumConstants = enumClass.getEnumConstants();
        return Arrays.stream(enumConstants).filter((e) -> {
            return code.equals(((IStrEnum<?>) e).getCode());
        }).findFirst().orElse(null);
    }

}
